package com.cskaoyan.jdbc.datasource;

import com.cskaoyan.jdbc.utils.JDBCUtils;

import java.sql.Connection;
import java.util.LinkedList;

/**
 * 创建日期: 2022/05/13 17:20
 *
 * @author ciggar
 *
 * 手动实现数据库连接池
 * 第二个版本
 * 优化：
 *  增加连接池自动扩容的功能
 */
public class MyConnectionPool2 {

    // 用来保存连接的容器
    // 假如连接从头部存，从尾部取
    static LinkedList<Connection> pool;

    static {

        pool = new LinkedList<>();

        addCapacity(10);

    }

    // 获取连接
    public static Connection getConnection(){

        if (pool.size() < 5) {
            // 自动扩容
            addCapacity(5);

        }

        Connection connection = pool.removeLast();
        return connection;

    }



    // 返回连接
    public static void returnConnection(Connection connection){

        pool.addFirst(connection);

    }


    // 增加连接的方法
    private static void addCapacity(Integer size){

        if (size <= 0) return;

        // 扩容
        for (int i = 0; i < size; i++) {
            Connection connection = JDBCUtils.getConnection();
            pool.addFirst(connection);
        }
    }
}
